package cn.itcast.SellTicekts;

public class SellTicektThread implements Runnable{
    //定义100张票
    private static int ticekts = 100;
    //定义一个对象充当同步代码块上的锁
    String a = new String("你好");
    @Override
    //重写方法run
    public void run() {
        //使用循环一直卖票
        while (true){
            //为了解决线程安全问题，给操作的共享资源代码加同步
            synchronized (a){
                //判断是否还有余票
                if(ticekts>0){
                    //休眠一毫秒，模拟延迟
                    try {
                        Thread.sleep(1);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    //有余票就用把买票人和出票的顺序打印出来
                    System.out.println(Thread.currentThread().getName()+"正在出第"+ticekts+"张票");
                    //当前票数-1
                    ticekts--;
                }
                else {
                    break;
                }
            }
            //同步代码块锁释放，下一个线程资源可以进入。
        }
    }
}
